package xyz.kongbai121.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.CacheNamespace;
import org.springframework.stereotype.Repository;
import xyz.kongbai121.demo.domain.Comment;
import xyz.kongbai121.demo.domain.User;
import xyz.kongbai121.demo.util.MybatisRedisCache;

import java.util.List;


/**
 * 用户 Mapper
 * @author 空白
 */
@Repository
@CacheNamespace(implementation= MybatisRedisCache.class,eviction= MybatisRedisCache.class)
public interface UserMapper extends BaseMapper<User> {
    /**
     *  查询用户账户是否正常
     * @param openid    用户唯一标识
     * @return
     */
    Integer getState(String openid);

    /**
     * 查询用户基本信息
     * @param openid    用户唯一标识
     * @return
     */
    User getUser(String openid);

    /**
     *  查询是否为管理员
     * @param openid    用户唯一标识
     * @return
     */
    Integer getAdmin(String openid);

    /**
     *  发布文章数加1
     * @param openid  用户唯一标识
     */
    void addArticleNum(String openid);

    /**
     *  发布文章数减1
     * @param openid  用户唯一标识
     */
    void subArticleNum(String openid);

    /**
     *  发布树洞数加1
     * @param openid  用户唯一标识
     */
    void addTreeHoleNum(String openid);

    /**
     *  发布树洞数减1
     * @param openid  用户唯一标识
     */
    void subTreeHoleNum(String openid);

    /**
     *  获取用户发布的文章数
     * @param openid    用户唯一标识
     * @return
     */
    Integer getArticleNum(String openid);

    /**
     * 获取用户发布的树洞数
     * @param openid    用户唯一标识
     * @return
     */
    Integer getTreeHoleNum(String openid);

    /**
     * 添加用户未读评论
     * @param openid    用户唯一标识
     * @return
     */
    void addUnreadComment(String openid);

    /**
     * 用户未读评论数减1
     * @param openid    用户唯一标识
     * @return
     */
    void subUnreadComment(String openid);

    /**
     * 获取用户未读评论
     * @param openid    用户唯一标识
     * @return
     */
    Integer getUnreadComment(String openid);

    /**
     * 清空用户未读评论
     * @param openid    用户唯一标识
     * @return
     */
    void emptyUnreadComment(String openid);

    /**
     * 添加用户未读评论
     * @param openid    用户唯一标识
     * @return
     */
    void addUnreadOpinion(String openid);

    /**
     * 用户未读评论减1
     * @param openid    用户唯一标识
     * @return
     */
    void subUnreadOpinion(String openid);

    /**
     * 获取用户未读评论
     * @param openid    用户唯一标识
     * @return
     */
    Integer getUnreadOpinion(String openid);

    /**
     * 清空用户未读评论
     * @param openid    用户唯一标识
     * @return
     */
    void emptyUnreadOpinion(String openid);

    /**
     * 获取userID
     * @param openid     用户唯一标识
     * @return
     */
    Long getUserId(String openid);
}
